package com.group4.datafactorybackend.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.group4.datafactorybackend.common.R;
import com.group4.datafactorybackend.entity.DO.StopwatchDO;
import com.group4.datafactorybackend.entity.DTO.BatchReleaseOrOutageDTO;
import com.group4.datafactorybackend.entity.DTO.CreateOrUpdateStopwatchDTO;
import com.group4.datafactorybackend.entity.DTO.StopwatchParameterDTO;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;

/**
 * @author 卑微小峰
 * @date 2022/8/1
 * @description 码表管理业务逻辑接口层
 */
public interface StopwatchManagementService extends IService<StopwatchDO> {

    /**
     * @author 卑微小峰
     * @param batchReleaseOrOutageDTO （批量）发布/停用接收参数实体类
     * @return R
     * @description （批量）发布/停用码表
     */
    R<?> releaseOrOutage(BatchReleaseOrOutageDTO batchReleaseOrOutageDTO);

    /**
     * @author 邹代鑫
     * @param createOrUpdateStopwatchDTO 新增、修改码表接收参数实体类
     * @return boolean
     * @description 新增码表
     */
    R<?> addStopwatch(CreateOrUpdateStopwatchDTO createOrUpdateStopwatchDTO);

    /**
     * @author 邹代鑫
     * @param createOrUpdateStopwatchDTO 新增、修改码表接收参数实体类
     * @return boolean
     * @description 编辑码表
     */
    R<?> updateStopwatch(CreateOrUpdateStopwatchDTO createOrUpdateStopwatchDTO);

    /**
     * @author 章珑赢
     * @param parameterDTO 查询码表列表条件实体类
     * @return R
     * @description 查询码表列表
     */
    R<?> stopwatchList(StopwatchParameterDTO parameterDTO);

    /**
     * @author 章珑赢
     * @param stopwatchCode 码表编号
     * @return R
     * @description 删除码表
     */
    R<?> deleteByStopwatch(String stopwatchCode);

    /**
     * @author 李泓静
     * @param stopwatchCode 码表编号
     * @return R
     * @description 查看码表详情
     */
    R<?> getStopwatchDetail(String stopwatchCode);

    /**
     * @author 邹代鑫
     * @param response 请求响应参数
     * @return int
     * @description 导出标准码表
     */
    R<?> export(HttpServletResponse response);

    /**
     * @author 邹代鑫
     * @param file 文件
     * @return R
     * @description 导入表格
     */
    R<?> importExcel(MultipartFile file);
}
